/**
 * 
 */
package com.xored.glance.internal.ui.sources;

import org.eclipse.swt.widgets.Control;

import com.xored.glance.ui.sources.ITextSource;
import com.xored.glance.ui.sources.ITextSourceDescriptor;

/**
 * @author Yuri Strot
 * 
 */
public class TextSourceMaker {

	public TextSourceMaker(ITextSourceDescriptor description, Control control) {
		this.description = description;
		this.control = control;
	}

	public boolean isValid() {
		return description == null ? false : description.isValid(control);
	}

	public ITextSource create() {
		return description == null ? null : description.createSource(control);
	}

	/**
	 * @return the control
	 */
	public Control getControl() {
		return control;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((control == null) ? 0 : control.hashCode());
		result = prime * result
				+ ((description == null) ? 0 : description.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		TextSourceMaker other = (TextSourceMaker) obj;
		if (control == null) {
			if (other.control != null)
				return false;
		} else if (!control.equals(other.control))
			return false;
		if (description == null) {
			if (other.description != null)
				return false;
		} else if (!description.equals(other.description))
			return false;
		return true;
	}

	private ITextSourceDescriptor description;
	private Control control;

}
